Implementation challenges of Diffie-Hellman Key Exchange
In practice, we don’t use the shared secret, we use a hash of the shared secret, and the identity of the parties involved (to avoid collisions between different parties).
As in TLS Interactive protocol between two parties. Always an initiator and a responder. Public key authentication only proves we’re talking to someone with a specific public key, but not anything about that public key. For that, we need entity authentication (e.g. PKI such as certs).
If the server is compromised in the future, it shouldn’t expose past communications
If the server is compromised, it exposes past and present communications, but some action can be taken to repair future security.